Al intentar ejecutar una consulta Where con LINQ en la que usamos la propiedad Length se lanza la siguiente excepción:
Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): Argument data type text is invalid for argument 1 of len function.
El código con el que estamos lanzando la consulta es el siguiente:
using EFCoreExample;
using (ColegioContext db = new())
{
IQueryable<Estudiante>? estudiantes = db.Estudiantes?.Where(e => e.Nombre.Length > 4);
foreach (Estudiante e in estudiantes)
{
Console.WriteLine($"{e.Id}: {e.Nombre}");
}
}
El error se debe a que el campo de la base de datos que estamos intentando consultar está definido con el tipo TEXT y este tipo no permite consultar la longitud del string que almacena:
Para solucionar el fallo simplemente tenemos que cambiar el tipo TEXT en la base de datos, por un tipo VARCHAR:
C# | .Net | LINQ | Where